/**
 * localStorage 可设置过期时间
 *  已自动转存取 Object、Array 的转换
 */

layui.define(function(exports){ //提示：模块也可以依赖其它模块，如：layui.define('layer', callback);
    var obj = {
        //存储,可设置过期时间
        set: function(key, value, expires) {
            expires = expires || 1800000 ; // 过期时间默认为半小时 30*60*1000
            var params = { key: key, value: value, expires:expires };
            // 记录何时将值存入缓存，毫秒级
            var data = Object.assign(params, { nowTime: new Date().getTime() });
            localStorage.setItem(key, JSON.stringify(data));
        },
        //取出
        get: function(key) {
            var item = localStorage.getItem(key);
            // 先将拿到的试着进行json转为对象的形式
            try {
                item = JSON.parse(item);
            } catch (error) {
                // eslint-disable-next-line no-self-assign
                item = item;
            }
            // 如果有nowTime的值，说明设置了失效时间
            if (item && item.nowTime) {
                var date = new Date().getTime();
                // 如果大于就是过期了，如果小于或等于就还没过期
                if (date - item.nowTime > item.expires) {
                    localStorage.removeItem(key);
                    return false;
                } else {
                    return item.value;
                }
            } else {
                return item;
            }
        },
        // 删除
        remove: function(key) {
            localStorage.removeItem(key);
        },
        // 清除全部
        clear: function() {
            localStorage.clear();
        }
    };
    //输出test接口
    exports('locals', obj);
});